// Index.ets
import http from '@ohos.net.http';
import promptAction from '@ohos.promptAction';

@Entry
@Component
struct UserManagement {
  @State phoneNumber: string = '';
  @State userInfo: string = '';
  @State newUserInfo: string = '';
  @State token: string = '';

  build() {
    Column({ space: 10 }) {
      // 登录部分
      TextInput({ placeholder: '输入手机号' })
        .width('90%')
        .onChange((value: string) => {
          this.phoneNumber = value;
        })

      Button('登录')
        .width('90%')
        .onClick(() => {
          this.handleLogin();
        })

      Divider().width('90%')

      // 获取用户信息部分
      Button('获取用户信息')
        .width('90%')
        .onClick(() => {
          this.getUserInfo();
        })

      Text(this.userInfo)
        .width('90%')
        .margin({ top: 10 })

      Divider().width('90%')

      // 更新用户信息部分
      TextInput({ placeholder: '输入新用户信息' })
        .width('90%')
        .onChange((value: string) => {
          this.newUserInfo = value;
        })

      Button('更新用户信息')
        .width('90%')
        .onClick(() => {
          this.updateUserInfo();
        })
    }
    .width('100%')
    .height('100%')
    .padding(20)
    .alignItems(HorizontalAlign.Center)
  }

  // 登录方法
  private handleLogin() {
    const httpRequest = http.createHttp();
    httpRequest.request(
      "http://localhost:8080/api/users/login",
      {
        method: "POST",
        header: {
          'Content-Type': 'application/json',
          'phoneNumber': this.phoneNumber
        }
      },
      (err, data) => {
        if (!err) {
          promptAction.showToast({ message: '登录成功' });
          console.info('Login response:', data.result);
        } else {
          promptAction.showToast({ message: '登录失败: ' + JSON.stringify(err) });
        }
      }
    );
  }

  // 获取用户信息
  private getUserInfo() {
    const httpRequest = http.createHttp();
    httpRequest.request(
      "http://localhost:8080/api/users/me",
      {
        method: "GET",
        header: {
          'Content-Type': 'application/json',
          'phoneNumber': this.phoneNumber
        }
      },
      (err, data) => {
        if (!err) {
          this.userInfo = data.result as string;
          promptAction.showToast({ message: '获取用户信息成功' });
        } else {
          promptAction.showToast({ message: '获取失败: ' + JSON.stringify(err) });
        }
      }
    );
  }

  // 更新用户信息
  private updateUserInfo() {
    const httpRequest = http.createHttp();
    httpRequest.request(
      "http://localhost:8080/api/users/me",
      {
        method: "PUT",
        header: {
          'Content-Type': 'application/json',
          'phoneNumber': this.phoneNumber,
          'newUserInfo': this.newUserInfo
        }
      },
      (err, data) => {
        if (!err) {
          promptAction.showToast({ message: '更新成功' });
          this.getUserInfo(); // 更新后重新获取用户信息
        } else {
          promptAction.showToast({ message: '更新失败: ' + JSON.stringify(err) });
        }
      }
    );
  }
}///